package com.itheima.string;

public class Demo1String {
    /*
        Java程序中, 所有的双引号字符串, 都是String这个类的对象

        字符串是常量；它们的值在创建之后不能更改
     */
    public static void main(String[] args) {
        //双引号直接赋值的方式是将字符串常量池的地址赋值给了等号左边的变量
        String s1 = "abc123";

        //前面"abc123"已经在常量池中加载过了,这里会直接复用
        String ss1 = "abc123";

        System.out.println(s1 == ss1);

        int length = s1.length(); //获取当前字符串的长度
        System.out.println(length);

        s1 = "def";  // 这一步是让s1这个字符串类型的变量, 记录了一个新的对象.
        System.out.println(s1);

        //2. 通过空参构造创建
        String s2 = new String("def");

        System.out.println(s1 == s2);   //s2是new出来的,指向堆空间,而s1指向常量池

        //3. 通过字符数组创建
        char[] chs = {'a','b','c'};
        String s3 = new String(chs);    //"abc"


        //4. 通过字符串作为构造参数创建字符串
        String s4 = new String(s2);     //将字符串对象作为构造参数
        String s5 = new String("abc");  //将字符串对象作为构造参数

        method(new Student());
    }
    public static void method(Student a){       //Student a = new Student();

    }
}
